package org.leo.dm.util;

import java.io.File;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;

/**
 * 
 * Created on 2015年12月24日
 * <p>
 * Description ehcache工具类
 * <p>
 * Copyright neusoft (c) 2015 .
 * 
 * @author xiao_h
 *
 */
public class EhcacheUtil {

	private static CacheManager cacheManager;

	/**
	 * 
	 * Created on 2015年12月24日 .
	 * 
	 * @author xiao_h
	 * @return 初始化
	 */
	public static CacheManager init(String path) {
		if (cacheManager == null) {
			cacheManager = CacheManager.create(CacheManager.class.getResourceAsStream(path));
		}
		return cacheManager;
	}

	/**
	 * 
	 * Created on 2015年12月24日 .
	 * 
	 * @author xiao_h
	 * @param cacheName
	 * @return 获取cache
	 */
	public static Cache getCache(String cacheName) {
		Cache cache = null;
		if (cacheManager != null) {
			cacheManager.addCache(cacheName);
			cache = cacheManager.getCache(cacheName);
		}
		return cache;
	}

	/**
	 * 
	 * Created on 2015年12月24日 .
	 * 
	 * @author xiao_h
	 * @param cacheName
	 *            溢出cache
	 */
	public static void removeCache(String cacheName) {
		if (cacheManager != null) {
			ToUtil clea = new ToUtil();
			Cache cache = cacheManager.getCache(cacheName);
			cache.removeAll();
			clea.takeTime("清空当前Cache花费时间", null);
			cacheManager.removeCache(cacheName);
		}
	}

	/**
	 * 
	 * Created on 2015年12月24日 .
	 * 
	 * @author Administrator 关闭
	 */
	public static void shutdownCacheManager() {
		if (cacheManager != null) {
			cacheManager.clearAll();
			cacheManager.shutdown();
		}
	}

	public static String getCacheFile(String cacheName) {
		File file = cacheManager.getDiskStorePathManager().getFile(cacheName);
		return file.getAbsolutePath();
	}

}
